package ormg

import (
	"github.com/beego/beego/v2/server/web"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"time"
)

var db *gorm.DB

func GetDB() *gorm.DB  {
	if db == nil {
		panic("数据库没有初始化")
		return nil
	}
	return db
}

func SetDB( d *gorm.DB) *gorm.DB  {
	if d == nil {
		panic("数据库没有初始化")
		return nil
	}
	db = d
	return db
}


func InitMysqlGorm()  {
	url := web.AppConfig.DefaultString("mysql::DefaultDB", "")
	db, err := gorm.Open(mysql.New(mysql.Config{
		DSN: url,
		DefaultStringSize: 256, // string 类型字段的默认长度
		DisableDatetimePrecision: true, // 禁用 datetime 精度，MySQL 5.6 之前的数据库不支持
		DontSupportRenameIndex: true, // 重命名索引时采用删除并新建的方式，MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引
		DontSupportRenameColumn: true, // 用 `change` 重命名列，MySQL 8 之前的数据库和 MariaDB 不支持重命名列
		SkipInitializeWithVersion: false, // 根据当前 MySQL 版本自动配置
	}), &gorm.Config{})
	if err != nil {
		println("gorm数据库初始化失败",err.Error())
		return
	}
	pool,err:=db.DB()
	if err != nil {
		println("gorm数据库初始化失败",err.Error())
		return
	}
	if pool != nil {
		pool.SetConnMaxIdleTime(60*time.Second)
		pool.SetConnMaxLifetime(60*time.Second)
		pool.SetMaxIdleConns(20)
		pool.SetMaxOpenConns(100)
	}
	SetDB(db)
}